/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionJugadores;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import gestionJDBC.*;

/**
 *
 * @author Jesus
 */
public class JugadorDB {
    
   private static gestorJDBC gestor = gestorJDBC.getInstance();

   public JugadorDB(){}
   
   public int crearJugador(String n, String a1, String a2, String fn, Double alt, 
                    String dom, String loc, int cp, String prov, String t, String col, 
                    String equipo, String r){
	
       int id = -1;
       ResultSet rs;
       boolean valido;
       
       gestor.Conectar();
             
        valido = gestor.Insertar("INSERT INTO Jugador (nombre, apellido1, apellido2,fecha_nacimiento, "
                                            + "altura, domicilio, localidad, codigo_postal, provincia, talla, "
                                            + "alta, colegio, equipo_ant, ropa) "
                                            + "VALUES ('"+ n + "','" + a1 + "','" + a2 + "','" + fn + "','" + alt 
                                            + "','" + dom + "','" + loc + "','" + cp + "','" + prov + "','" + t 
                                            + "','Si', '"+col+"','"+equipo+"', '"+r+"')");
   
        
        rs=gestor.Consultar("SELECT max(Jugador.id_jugador) AS max_id FROM Jugador");
        try {            
            rs.next();
            id=(Integer) rs.getObject("max_id");
               
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "No se puede obtener el numero de jugadores registrados\n"+e.getMessage());
        }
         
        gestor.Desconectar();

	return id;
    }

    static public Jugador getJugador(int id) {
	gestor.Conectar();
	ResultSet rs = gestor.Consultar("SELECT * FROM Jugador WHERE id_jugador='" + id
						+ "'");
	Jugador j = new Jugador();

	try {
            rs.next();
            j.setId_jugador((Integer) rs.getObject("id_jugador"));
            j.setNombre(rs.getObject("nombre").toString());
            j.setApellido1(rs.getObject("apellido1").toString());
            j.setApellido2(rs.getObject("apellido2").toString());
            j.setFecha_nacimiento(rs.getObject("fecha_nacimiento").toString());
            j.setAltura((Double) rs.getObject("altura"));
            j.setDomicilio(rs.getObject("domicilio").toString());
            j.setLocalidad(rs.getObject("localidad").toString());
            j.setCodigo_postal((Integer) rs.getObject("codigo_postal"));
            j.setProvincia(rs.getObject("provincia").toString());
            j.setTalla(rs.getObject("talla").toString());
            j.setAlta(rs.getObject("alta").toString());
            j.setColegio(rs.getObject("colegio").toString());
            j.setEquipo_ant(rs.getObject("equipo_ant").toString());
            j.setEquipo_ant(rs.getObject("ropa").toString());
        } catch (SQLException e) {
	JOptionPane.showMessageDialog(null,
            "Error obtener el jugador de la base de datos\n" + e.getMessage());
	}
	gestor.Desconectar();
	return j;
    }
    
    public ArrayList<Jugador> getJugadores(String nombre, String apellido1, String apellido2){
        
        ArrayList<Jugador> jugadores = new ArrayList<Jugador>();
        
        gestor.Conectar();
	ResultSet rs = null;
        
        rs = gestor.Consultar("SELECT * FROM Jugador WHERE nombre = '"+ nombre + "' and "
                                    + "apellido1 = '"+ apellido1 +"' and apellido2 = '"
                                    + apellido2 +"' and alta = 'Si'");
        
	int i = 0; 
        try{
            while(rs.next()){
                
                jugadores.add(new Jugador());
                jugadores.get(i).setId_jugador((Integer) rs.getObject("id_jugador"));
                jugadores.get(i).setNombre(rs.getObject("nombre").toString());
                jugadores.get(i).setApellido1(rs.getObject("apellido1").toString());
                jugadores.get(i).setApellido2(rs.getObject("apellido2").toString());
                jugadores.get(i).setFecha_nacimiento(rs.getObject("fecha_nacimiento").toString());
                jugadores.get(i).setAltura((Double) rs.getObject("altura"));
                jugadores.get(i).setDomicilio(rs.getObject("domicilio").toString());
                jugadores.get(i).setLocalidad(rs.getObject("localidad").toString());
                jugadores.get(i).setCodigo_postal((Integer) rs.getObject("codigo_postal"));
                jugadores.get(i).setProvincia(rs.getObject("provincia").toString());
                jugadores.get(i).setTalla(rs.getObject("talla").toString());
                jugadores.get(i).setAlta(rs.getObject("alta").toString());
                jugadores.get(i).setColegio(rs.getObject("colegio").toString());
                jugadores.get(i).setEquipo_ant(rs.getObject("equipo_ant").toString());
                jugadores.get(i).setRopa(rs.getObject("ropa").toString());
                
                i++;
            }
        }catch(SQLException e ){
            JOptionPane.showMessageDialog(null,"Error al obtener la lista de jugadores\n"
							+ e.getMessage());
	}
        
        gestor.Desconectar();
                
        return jugadores;
    }
    
    public boolean setJugador(int id, String n, String a1, String a2, String fn, Double alt, 
                    String dom, String loc, int cp, String prov, String t, String col, String eq, String r){
	
        gestor.Conectar();
        
	Boolean valido = gestor.Modificar("UPDATE Jugador SET nombre='"+ n +"', apellido1='" + a1 + "', apellido2='" + a2 
                                            + "',fecha_nacimiento ='"+ fn +"', altura='"+ alt +"', domicilio='"+ dom 
                                            + "', localidad='"+ loc +"', codigo_postal='"+ cp +"', provincia='"+ prov 
                                            + "', talla='"+ t +"', colegio='"+ col +"', equipo_ant='"+ eq +"', ropa='"+ r +"'  WHERE id_jugador='"+id+"'");
	

	gestor.Desconectar();
	return valido;
    }
    
    public boolean ropaEntregada(int id){
            
        gestor.Conectar();
        
	Boolean valido = gestor.Modificar("UPDATE Jugador SET ropa='Si'  WHERE id_jugador='"+id+"'");
	

	gestor.Desconectar();
	return valido;
            
    }        
    
    public Boolean bajaJugador(Integer id) {

	gestor.Conectar();
        
	boolean valido = gestor.Modificar("UPDATE Jugador SET alta='No' WHERE id_jugador='" + id + "'");
	gestor.Desconectar();
	
        return valido;
    }
    
    public boolean asociarPago(int id_jugador, int id_pago){
    
        gestor.Conectar();
    
        boolean valido = gestor.Insertar("INSERT INTO Realiza (id_jugador, id_pago) "
                                            + "VALUES ('"+ id_jugador + "','" + id_pago +"')");
        
        gestor.Desconectar();
	return valido;

    }

}
